Automatic strategy determination for computer aided manufacturing

ABSTRACT

A method for automated manufacturing strategy generation can include: identifying features of a desired part from a virtual model; and determining a tactic strategy based on the identified features. The method can additionally include: determining a toolpath primitive for each tactic; combining the toolpath primitives for the tactics to generate a master toolpath; and translating the master toolpath into machine code.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.15/263,213, filed 12 Sep. 2016, which claims priority to U.S.Application No. 62/217,504 filed 11 Sep. 2015, both of which areincorporated in their entirety by this reference.

TECHNICAL FIELD

This invention relates generally to the automated manufacturing field,and more specifically to a new and useful system and method forautomated strategy and stage determination for computer-aidedmanufacturing in the automated manufacturing field.

BACKGROUND

Automatic manufacturing strategy determination for a part can bedesirable when fully automating part manufacture. However, automaticallydetermining the manufacturing strategy cannot be accomplished by simplyautomating a previously manual process. This is because conventionally,the manufacturing strategy (including the selection and order of machineuse, the feature manufacturing order, the toolpath determination, andother strategy parameters) is uniquely created by an experiencedmachinist for each part to be manufactured. The guidelines used byindividual machinists not only vary across machinists, but also cannotbe applied globally to a majority of part manufacture. Furthermore,these guidelines are not amenable to optimization for a manufacturingparameter, such as time (e.g., machine run time, time to delivery,etc.), cost, or material use. Thus, there is a need in the automatedmanufacturing field to create a new and useful system and method forautomated manufacturing strategy determination. This invention providessuch improved/new and useful system and method.

Additionally, conventionally, the user operating the machine is the onewho programmed the machine. This user therefore has an inherentunderstanding of the intended process, and can immediately identifyerrors in the machining process, such as whether the part is arranged inits intended orientation, whether the intended toolpath has beenexecuted, or whether a software update to the machine has changed howthe machine is interpreting the machine code. In contrast, when partmanufacture is fully automated, the operator is no longer the machineprogrammer, particularly in instances where the machine program isautomatically generated. This disconnect leads to a feedback void—theoperator is no longer capable of identifying if and when things gowrong. This problem is further compounded when different machines areused interchangeably, because different machines interpret the same codedifferently. Thus, there is a need in the automated manufacturing fieldto create a new and useful system and method of reducing or eliminatingmanufacturing errors, and a new and useful system and method of enablinginterchangeable machine use. This invention provides such improved/newand useful system and method.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 is a schematic representation of the method.

FIG. 2 is a schematic representation of a variation of the method.

FIG. 3 is a schematic representation of an example of the method forgenerating a master toolpath for a virtual part.

FIG. 4 is a schematic representation of an example of the method forgenerating a master toolpath for multiple virtual parts.

FIG. 5A is an example of a virtual model of a desired part.

FIG. 5B is a cross section of the example in FIG. 5A, with the featuresidentified.

FIG. 6 is a flowchart representation of an example sequence of tacticsto be applied to virtual model features.

FIGS. 7 and 8 are examples of tactic dependency determination based onpredetermined inter-feature interaction patterns.

FIG. 9 is an example of ordered tactic series determination for eachidentified feature of a virtual model.

FIG. 10 is an example of generating toolpaths for the face based on thetactics; and generating machine code based on the toolpaths.

FIG. 11 is an example of generating toolpaths for multiple parts on afixture plate.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

The following description of the preferred embodiments of the inventionis not intended to limit the invention to these preferred embodiments,but rather to enable any person skilled in the art to make and use thisinvention.

1. Overview.

As shown in FIG. 1, the method for automated manufacturing strategygeneration includes: identifying features of a desired part from avirtual model S100; and determining a tactic strategy based on theidentified features S200. As shown in FIG. 2, the method canadditionally include determining a toolpath primitive for each tacticS300; combining the toolpath primitives for the tactics to generate amaster toolpath S400; and translating the master toolpath into machinecode S500. The method can optionally include manufacturing a physicalpart using the machine code. The method can optionally include receivinga virtual part model and determining an order for manufacturing the partfaces, wherein the part face ordering can be used in determining themaster toolpath.

This method functions to generate an overall strategy to manufacture adesired part, wherein the strategy can include: the order ofmanufacturing processes, which machines to use, which tools to use, whatpath the tools should take, the tool operation parameters (e.g., spindlerate, feed rate, etc.) over the course of each toolpath, and/or anyother suitable strategy parameter. The method can additionally functionto optimize the manufacturing strategy for one or more manufacturingparameters, such as machine runtime, delivery time, cost, or any othersuitable manufacturing parameter. For example, the method can minimizethe residence time of a part within a machine, minimize the totalruntime required to manufacture the part (across one or more machines),minimize the time required to manufacture the part (e.g., across one ormore machines or manufacturing facilities, including inter-machine orinter-facility transfer time, etc.), or otherwise minimize the timeassociated with manufacturing a part.

2. Benefits and Systems.

This method can confer several benefits over conventional manufacturingstrategy determination methods. First, by isolating each feature andindividually generating toolpaths for each feature, the method functionsto reduce the large problem of generating a master toolpath into smallerproblems that can be tackled individually in a systematic manner.Second, by generating feature toolpaths based on a set of generic tacticstrategies, the method can dynamically generate different featuretoolpaths based on the tool or machine selected for the part. Forexample, the method can just as easily generate a toolpath for a 3-axisCNC mill or a toolpath for a 5-axis CNC mill for the same part, based onthe same set of tactic strategies. Third, by aggregating the disparateor loosely-associated feature toolpaths into the master toolpath afterthe feature toolpaths have been generated, the method enablesoptimization of manufacturing parameters. This secondary aggregationprocess can additionally enable the method to dynamically accommodatefor changes in machine availability, facility capability, andmanufacturing demand. For example, when a waterjet cutting machine isavailable, the master toolpath can include roughing the part featureswith the waterjet cutting machine, then finishing with a millingmachine. When the waterjet cutting machine is not available (e.g., isdown for maintenance or is being used for other parts, such as largeparts where the waterjet cutting machine can reduce a larger percentageof the machining time), the master toolpath can be dynamically adjustedto include roughing the same part features with a mill or other machine.The secondary aggregation process can additionally enable the method toselect master toolpaths or master series that maximize one or morevariables. For example, a first master toolpath or series (masterstrategy) that minimizes the number of tool changes and tool movementcan be selected when a strategy optimized for manufacturing time isdesired, while a second master strategy that maximizes an anticipatedpart pass rate can be selected when a strategy optimized for high passrates is desired. Fourth, by generating a master strategy from disparatefeature strategies that are machine-independent, this method dynamicallyaccommodates for differences between machine types, models, andversions. This accommodation effectively removes the prior requirementfor the operator to have an inherent understanding of the machine, themachine code, and how the machine is supposed to manifest the code. Thisalso allows for probing paths to be automatically generated, since partand cut location are known.

The same method is preferably applied to generate strategies for each ofa plurality of desired parts (e.g., multiple virtual models), but canalternatively be applied to generate strategies for a single desiredpart. The strategies for multiple desired parts can be generatedconcurrently (e.g., in parallel), generated serially (e.g., wherein therespective virtual models are queued and serially processed), generatedin real-time (e.g., as the respective virtual models are received), orbe generated in any suitable order at any suitable time. The strategiesfor multiple desired parts can be integrated into a single masterstrategy used to manufacture the multiple desired parts in the samemanufacturing run (e.g., concurrently on the same plate, in the samevolume, etc.), but can alternatively remain separate, such that themultiple desired parts can be manufactured in different manufacturingruns. The method is preferably applied to the virtual model in responseto virtual model receipt (e.g., from the system and method disclosed inU.S. application Ser. No. 14/517,711, incorporated herein in itsentirety by this reference, but alternatively received from any othersuitable system in any other suitable manner), but can alternatively beapplied to the virtual model after manufacturability has been verified(e.g., in the manner disclosed in U.S. application Ser. No. 14/517,734,incorporated herein in its entirety by this reference, but alternativelyin any other suitable manner), after a fixture has been generated forthe desired part, or be applied to the virtual model at any othersuitable time. The output of the method can additionally be used ingenerating probe paths for confirming physical part placement,orientation, or manufacture (e.g., in the method disclosed in U.S.application Ser. No. 14/807,350, incorporated herein in its entirety bythis reference, but alternatively in any other suitable method).

The method can be run once or multiple times. In the latter variation,different instances of the method can be performed and considered forthe same part concurrently (e.g., in parallel), in series (e.g., whereinsubsequent instances can be run when the results prior instances wereunsatisfactory, run to consider all possible options), or in any othersuitable order. Different instances of the method can be run withdifferent combinations of variable values (e.g., different machiningaxes, different feature definitions, different feature classificationsfor a feature, etc.) or otherwise performed. When multiple instances arerun, the method can include selecting an optimal master toolpath fromthe plurality of results, wherein the optimal master toolpath can be thetoolpath that minimizes tool changes, minimizes tool motion, minimizespart failure, minimizes manufacturing cost, minimizes manufacturingtime, maximizes a confidence metric, or be otherwise selected.

All or part of method can be automatically performed by a processingsystem, wherein the processing system can be a manufacturing machine, acomputing system local to the manufacturing facility, a computing systemremote from the computing facility (e.g., a server system), a userdevice, or be performed by any other suitable system. The method can beperformed in response to receipt of the virtual part, when a thresholdvolume of virtual parts have been received, or at any other suitabletime. The computing system can be a set of servers (e.g., networkedservers), GPUs, CPUs, microcontrollers, or be any other suitable set ofcomputing systems. The processing system can additionally store oraccess any libraries (e.g., machine code translation libraries),equations (e.g., spindle speed equations for each tool or tool type,stepover equations, etc.), rules (e.g., feature detection rules, featuredependency rules), graphs or charts (e.g., stepdown graphs),manufacturing facility information (e.g., available processes ormachines, capacity, tools available, schedule, etc.), or any othersuitable data used in the method.

The method is preferably used with a virtual model. The virtual model ispreferably received from a user (e.g., from a CAD program, from a useraccount), but can alternatively be automatically generated (e.g., from a3D scanning program), or be otherwise generated. The virtual model caninclude a set of analytic faces (e.g., include edges and loops; vectors;etc.), include a mesh geometry, or have any other suitable virtualrepresentation. The method is preferably used as part of a process toautomatically manufacture a physical part substantially similar to thevirtual model, but can alternatively be otherwise used.

3. Automatic Computer Aided Manufacturing.

a. Identifying Features.

Identifying features from a virtual model of a virtual part S100functions to identify regions for which individual toolpaths will begenerated. Examples of features that can be identified include: surfaces(e.g., peripherals or levels), boundaries, holes, indents, chamfers,curves, fillets, ribs, bosses, domes, extrusions, or include any othersuitable feature. The virtual part preferably includes a plurality offeatures, but can alternatively include any suitable number of features.An example of a virtual part and respective identified features is shownin FIG. S 5A and 5B, respectively.

The features (part features) can be identified from virtual modelmetadata (e.g., based on the feature tool used to create the virtualmodel, received from the CAD program), geometric analysis (e.g., surfacecontour analysis, vector analysis, etc.), heuristic analysis (e.g.,using hint-based methods, rule-based methods, neural networks, patternmatching), volumetric analysis (e.g., differential volume analysis,convex hull analysis, decomposition, etc.), topology analysis (e.g.,graph based analysis), a combination of the above, or be otherwiseidentified.

In one variation, the features are determined S100 based on the partfaces. In one embodiment, adjacent part faces (e.g., contiguous partfaces) sharing a common feature class can be grouped together into afeature. In a second embodiment, adjacent part faces satisfying apredetermined pattern or satisfying a predetermined rule can be groupedinto a feature. The pattern or rule can be associated with a tool ortool type, or be otherwise defined. For example, a set of adjacent partfaces cooperatively forming a T-slot that substantially matches areference T-slot associated with an available T-slot cutter can begrouped together into a feature.

In a second variation, the features can be automatically identifiedusing a feature identification engine. However, the features can beotherwise identified.

The method can optionally include splitting a feature into one or morefeatures when a predetermined set of conditions are met (e.g., when thefeature cannot be manufactured as a single feature, when an optimizationindicates that the feature can be better manufactured as multiplefeatures, etc.). In one variation, the method can include: determiningthat a feature access depth (e.g., measured from the top of an adjacentfeature within a predetermined distance of the feature to the lowestfeature distance) is less than a tool length or toolholder length, andsubdividing the feature in response to such determination. Subdividingthe feature can include: dividing the feature according to a set ofpredetermined rules (e.g., if a through-hole, then divide into twosub-holes that connect, wherein the two sub-holes are formed fromopposing faces), dividing the feature according to a subdivisionproduced by a neural network, or otherwise subdividing the feature.

The method can optionally include classifying the features Silo, whichfunctions to associate each feature with a feature class. This canfunction to shortcut feature tactic determination, feature tooldetermination (e.g., determine which tool to use to manufacture thefeature), feature process determination, or other feature-baseddeterminations. This can also function to enable the process to workwith features in more abstract manner by decoupling the feature from itsspecific geometry. Examples of feature classes that can be used include:levels (level features), peripherals (peripheral features), chamfers(chamfer features), fillets (fillet features), holes (hole features),and deburring (deburring features). However, any other suitable classescan be used.

Feature classes can be defined by geometry (e.g., slot, pocket, channel,etc.), tool type (e.g., square end mill, ball end mill, roughing endmill, tapered end mill, chamfer end mill, concave radius end mill,etc.), tool (e.g., ball end mill with first diameter, ball end mill withsecond diameter, etc.), process, relationship to the manufacturing axis,or otherwise classified. The feature class can be part of a static setof feature classes, a dynamic set of feature classes, or any othersuitable set of feature classes. The feature classes and/or feature setscan be determined based on the tools available at a manufacturingfacility, processes available at a manufacturing facility, determined bya user (e.g., manufacturing entity, user account), or otherwisedetermined.

Each feature class can be associated with one or more tools or tooltypes. The feature class can be associated with the tool type or toolthrough the tactics within the tactic set associated with the featureclass, be directly associated with the tool or tool type, or beotherwise associated with the tool type or tool.

A part feature can be classified with one or more feature classes. Whenthe part feature is classified with multiple part feature classes,different instances of the method can be run (e.g., concurrently,serially, etc.) for each potential part feature class. Alternatively,the part feature can be classified with the feature class having thelowest failure rate, lowest tool movement, highest probability, highesttool availability (e.g., in the manufacturing facility), or as thefeature class that satisfies any other suitable set of conditions.

The features can be classified using the virtual model metadata, throughgeometric analysis, through a set of rules, through a neural network,through a classification module (e.g., trained on a supervised set), orotherwise classified.

In a first variation of feature classification, the feature isclassified based on the tool capable of machining the feature geometry.For example, a part feature (e.g., a corner) can be classified as afirst feature class associated with a tool (e.g., a radius cutter) whenthe part geometry (e.g., corner radius) matches the tool radius, andclassified as a second feature class associated with a different tool(e.g., a ball end mill) when the part geometry matches the tool radiusor does not match the first tool's radius. However, the feature can beotherwise classified.

In a second variation of feature classification, the feature inheritsthe classification of the part face(s) forming the feature. In thisvariation, the part face(s) can be classified with a feature class orotherwise associated with a feature class. In one embodiment of thisfirst variation, identifying the features from the virtual modelincludes: identifying part faces of the virtual part, classifying eachpart face with a feature class, identifying adjacent part faces sharinga common parameter (e.g., sharing a common feature class), and groupingthe identified part faces into a feature. The resultant feature can havethe same feature class as the constituent part faces, have a differentfeature class determined based on the combination of the identified partfaces, or have any other suitable feature class. However, features orfeature primitives (e.g., feature components) can be otherwiseclassified.

Identifying part faces functions to identify feature primitives (e.g.,feature components). The part faces are preferably determined before thefeatures are identified, but can alternatively be determined afterward.The part faces can be determined from the virtual model using boundaryrepresentation methods, volume-based methods, or any other suitablemethod. In one example, the part face is determined using boundaryrepresentation methods, wherein a part face can be defined as a surfaceor region enclosed by a loop of edges. However, the part face can beotherwise defined.

Classifying each part face with a feature class (e.g., a feature classcan be determined for the part face) functions to classify the featureprimitives. The part face can be classified using the featureclassifications discussed above, be classified based on the part facegeometry (e.g., planar, concavity, etc.), be classified based on thepart face orientation relative to a manufacturing axis, or be classifiedusing any other suitable method.

In one variation, the part face can be classified based on therelationship between the part face and a manufacturing axis. Forexample, part faces substantially normal to the manufacturing axis canbe classified as level features, part faces substantially parallel tothe manufacturing axis can be classified as peripheral features, planarpart faces at an angle (between normal and parallel) to themanufacturing axis can be classified as chamfered features, curved partfaces can be classified as filleted features (e.g., surfaces formed bysweeping a circle along a curve; curved surfaces; concave or convexsurfaces; etc.), part faces bounding cylindrical voids can be classifiedas hole features, and edges can be classified as deburring features. Apart face can be considered to be substantially related to a referenceelement (e.g., substantially normal, substantially parallel) when thepart feature is within a threshold unit value (e.g., angular range,distance, etc.) of the reference element. In a specific example, partfaces at an angle to the manufacturing axis (face angle) can beclassified with the feature class associated with a tool having a toolangle substantially matching the face angle. Features with face anglesthat do not match any tool angles can be rejected, adjusted to match atool angle and recommended to the user, or otherwise managed. However,the part faces can be otherwise classified.

The method can optionally include determining a manufacturing axis,which functions to specify the tool access axis (e.g., z-axis, axisparallel the tool longitudinal or rotation axis). The manufacturing axis(e.g., machining axis, operation axis, access axis, operation direction,access direction, manufacturing direction, etc.) can be determinedbefore, after, or during feature identification, feature classification,part face determination, or at any other suitable time. Each part canhave one or more manufacturing axes, wherein the number of manufacturingaxes can be based on the machine used, process used, tools to be used,or any other suitable parameter. The manufacturing axis is preferably amajor axis of the part (e.g., an x-axis, y-axis, z-axis, etc.), but canalternatively be any other suitable axis. Determining the manufacturingaxis can include determining the manufacturing axis from virtual modelmetadata (e.g., received from the CAD program), received from a user(e.g., the user account providing the virtual model), determined basedon part face geometry, determined based on part feature geometry,determined based on available tool geometry, or otherwise determined. Inone variation, determining the manufacturing axis includes: identifyingall part faces of the virtual part, determining all access directionsfor each part face (determining potential accessibility directions foreach part face), and identifying one or more access directions shared byevery part face, wherein the manufacturing axis can be defined as theaxis extending along or parallel to the identified access direction(s).The potential access directions for a face can include a vector opposingthe face normal, the locus of directions parallel the face normal, orany other suitable set of directions. In one embodiment, the methodincludes selecting an antiparallel access direction pair that allowsevery face to be accessed, wherein the manufacturing axis can beparallel to the antiparallel access direction pair. If an antiparallelaccess direction pair cannot be found, the virtual part can be rejected,additional manufacturing axes determined (e.g., for auxiliary partflips), alternative manufacturing processes considered, or otherwisehandled. However, the manufacturing axis can be otherwise determined.

Identifying adjacent part faces with the same feature class and groupingthe identified part faces into a feature functions to group part facesthat can be manufactured using the same tool together. The adjacent partfaces can be contiguous, be separated but located within a thresholddistance of each other (e.g., within a tool tolerance distance, within atool diameter, etc.), or be otherwise related. The identified part facescan share the same feature class, sub-class, tool type, tool, or shareany other suitable parameter. Grouping the part faces together into afeature can include virtually linking the part faces together, treatingthe part faces as a singular feature, assigning a single tactic set tothe group of part features, generating a single toolpath primitive forthe group of part features (e.g., generating a single series of toolpathinstructions for the group of part features, wherein the toolpathinstruction series cannot be subsequently reordered or modified), orotherwise treating the part faces as a single group. However, thefeatures can be otherwise classified.

Classifying the feature Silo can additionally include determiningprerequisite features for the feature wherein prerequisite features canbe secondary features, that are required or helpful in the formation ofthe feature. The prerequisite feature can be another feature in thevirtual model, or be a feature not included in the virtual model(wherein the feature can be subsequently added to the feature set). Forexample, when a feature is classified as a hole, a center indent (e.g.,formed by a center punch) can be added as a secondary, prerequisitefeature to the feature set. In another example, to create a circularindent with a flat bottom, a circular indent must be formed before thebottom can be leveled. The prerequisite feature can additionally beassociated with the feature, more preferably associated as a featurethat must be formed prior to feature formation. However, theprerequisite features can be otherwise determined and used.

Individual features can additionally be grouped into geometries, whereineach geometry can include one or more contiguous features. Differentgeometries can be separated by predefined features, such as peripheralfeatures (e.g., features parallel to a stock face), by a user-specifieddivider, by tool type, or be defined in any other suitable manner. Forexample, the walls and bottom of an indent can be treated as a singlegeometry.

b. Determining a Tactic Strategy.

Determining a tactic strategy based on the identified features S200functions to generate a set of disparate or loosely-associated tacticsfor each feature. In some variants, a tactic strategy is determined foreach individual feature, which functions to split thecomputationally-intensive problem of generating a global tactic strategyinto smaller, more manageable pieces. While this may result in sometoolpath or code redundancies, in increased tool changes, or inunnecessary tool motion, this method can be simpler from a computationalstandpoint. The tactic strategy can be determined before toolpathprimitive determination or generation (e.g., wherein the toolpathprimitives can inherit the tactic dependencies), after toolpathprimitive determination or generation (e.g., wherein the toolpathprimitives can be adjusted based on and/or merged in the order specifiedby the tactic strategy), concurrently with toolpath primitivegeneration, or determined at any other suitable time.

Determining the tactic strategy S200 can include determining a set oftactics (stages) for each feature of a feature set, which functions todetermine individual feature strategies for each feature. The set oftactics for each feature can include one or more tactics. The set oftactics can be an ordered series of tactics, wherein each successivetactic within an ordered series is dependent upon a preceding tacticwithin the ordered series. For example, an ordered series can include aroughing tactic and a finishing tactic (e.g., chamfering tactic,filleting tactic, hole making tactic, etc.), where the finishing tacticis dependent upon (e.g., must be performed after) the roughing tactic inthe ordered series. Alternatively, the tactic set can be unordered or beotherwise structured. However, the tactic strategy can be otherwisestructured.

A tactic (stage) can be a virtual process capable of completing (e.g.,virtually manufacturing or creating) a certain class of features. Thetactic can be associated with one or more feature classes. Each featureclass can be associated with one or more tactics. In one variation, eachfeature class is associated with a different ordered series of tactics,wherein each successive tactic within the ordered series is dependentupon the preceding tactic. For example, an ordered series of tactics caninclude a roughing tactic, followed by one or more finishing tactics.The feature class can be defined by the finishing tactic types (e.g., achamfering class defined its associated ordered series including achamfer finishing tactic). However, the feature classes can be otherwiserelated to the tactics.

Examples of tactics include: a roughing tactic, configured to removevirtual material from a virtual representation of the part stock; afinishing tactic configured to remove material to within a thresholddistance from the virtual model; a semi-roughing tactic configured toremove material to a fixed offset distance from the virtual model; amanipulation tactic configured to manipulate (e.g., rotate) a workpiecerelative to a tool cutting surface; a contouring tactic configured tomanipulate a tool side relative to a workpiece; a hole making tacticconfigured to form holes in the virtual part stock; a chamfering tacticconfigured to chamfer edges of the virtual part stock; a filletingtactic configured to create a fillet in the virtual part stock; a levelfinishing tactic configured to remove material to within a thresholddistance of a plane perpendicular the machining axis; a peripheralfinishing tactic configured to remove material to within a thresholddistance of a plane parallel the machining axis; a deburring tacticconfigured to deburr part edges; or include any other suitable tacticconfigured to form any other suitable feature or geometry.

In one example, a limited set of tactics can be available for assignmentto the features (e.g., through the feature class), wherein the tacticsthat can be assigned include a roughing tactic (e.g., the same for eachfeature class, alternatively different) and finishing tactics, whereinthe finishing tactics include: a hole making tactic, a chamferingtactic, a level finishing tactic, a peripheral finishing tactic, afilleting tactic, and a deburring tactic. However, any other suitabletactic can be used. Each tactic can additionally be associated with aset of limitations, such as access limitations, prerequisitelimitations, minimum material limitations, or include any other suitableset of limitations.

Each tactic can be associated with a tool type or tool, but can beassociated with any other suitable parameter. In one variation, eachtactic can be associated with a specific tool type. For example, thechamfering tactic is associated with a chamfering tool with a given toolangle, while a roughing tactic is associated with a roughing tool (e.g.,roughing end mill).

Determining tactic strategy based on the identified features S200 caninclude generating, selecting, assigning (e.g., using a rule set, usinga neural network, etc.), calculating, or otherwise determining thetactic set for each identified feature.

In a first variation, determining tactic strategy based on theidentified features S200 includes considering the geometries for allfeatures and generating the tactic strategy based on the aggregategeometries. In this variation, the tactic strategies are generated forthe part as a whole, such that tactics do not need to be independentlydetermined for each feature before aggregation.

In a second variation, determining tactic strategy based on theidentified features S200 (e.g., determining the tactic strategy for thefeature set) includes comparing the feature geometries and featurearrangement of the current feature to a historic feature, and generatinga tactic strategy for the current feature by modifying the tacticstrategy for the historic feature based on differences between thecurrent feature and the historic feature. However, the tactic strategyfor the feature set can be otherwise determined.

In a third variation, determining the tactic strategy for a feature S200can include: determining whether a feature can be formed by a tactic(e.g., from a predetermined tactic set); associating the tactic with thefeature and marking the feature as complete if the feature can be formedby the tactic; and marking the feature as incomplete if the featurecannot be formed by the tactic. The method can additionally include:after application of each tactic, re-applying the previously appliedtactics to determine whether any of the previously inapplicable tacticsare now applicable. Alternatively, the tactics can be applied, withoutrevisiting previously applied tactics.

In a fourth variation, determining a set of tactics for a feature S200includes: identifying the feature class for the feature (e.g.,determined as discussed above), determining the tactic set associatedwith the feature class, and assigning the tactic set to the featurebased on the feature class. An example is shown in FIG. 9.

In the fourth variation, each feature class is associated with a tacticset, more preferably an ordered series of tactics but alternatively anysuitable set of tactics. The feature class-tactic set association can bepredetermined, automatically assigned (e.g., by a neural net),dynamically determined, or otherwise determined. Each feature class ispreferably associated with a different tactic set, but different featureclasses can share a tactic set. The tactic sets for each class arepreferably predetermined (e.g., heuristically, empirically, receivedfrom a user, etc.), but can alternatively be dynamically determined orotherwise determined. The feature class can be defined by one or more ofthe tactics within its associated tactic set, but can be otherwisedefined. For example, a level feature can be associated with a roughingtactic and a level finishing tactic, a peripheral feature can beassociated with a roughing tactic and a peripheral finishing tactic; ahole feature can be associated with a roughing tactic and a hole makingtactic; a chamfering feature can be associated with a roughing tacticand a chamfering tactic; a filleting feature can be associated with aroughing tactic and a filleting tactic; and a deburring feature (e.g.,an edge, an available edge, etc.) can be associated with a deburringtactic. However, each feature can be associated with any other suitabletactic set.

However, determining a tactic strategy for each feature S200 caninclude: applying every combination of tactics (e.g., every possibletactic series) to a virtual model of a feature precursor until a tacticcombination is found that virtually creates the feature; feeding thefeature through a neural network, wherein the neural network generates atactic series; calculating the probability of success for each possibletactic or series thereof in generating the desired feature, andselecting the tactic or series having the highest probability; orotherwise determining the tactic strategy for a feature.

c. Generating a Master Series.

The method can optionally include aggregating tactic strategies forindividual features together into a master series S210, which functionsto generate the tactic strategy (the master series, the master tacticstrategy) for the part, examples shown in FIG. 2, FIG. 3, and FIG. 4.One or more master series can be generated for a virtual part. Tacticstrategy aggregation can be performed once, iteratively, or any suitablenumber of times to generate the master series. In a first variation, asingle master series is generated for the virtual part, wherein tacticstrategies for all virtual part features are aggregated into the masterseries (e.g., wherein the feature set includes all features). In asecond variation, two tactic strategies are generated for the virtualpart (e.g., for a 3-axis machine), one for each machining direction,wherein tactic strategies for all features accessible from a commonmachining direction are aggregated together (e.g., wherein the featureset includes features sharing a common accessibility direction).However, any suitable number of master series can be generated for anysuitable feature set, wherein the number of master series can bedetermined based on: the process type, the machine type or capabilities(e.g., 3-axis, 5-axis, etc.), the number of part flips, whether a workholding system can be made for the part intermediaries, a work holdingconfidence score, or any other suitable variable.

The individual features for which the tactic strategies are aggregatedcan be from a single virtual part, from a single part face (e.g.,accessible from a single machining direction), from multiple virtualparts (example shown in FIG. 4), or for any suitable set of features.When the individual features are from multiple virtual parts, the methodcan additionally include selecting a plurality of virtual parts forconcurrent manufacture (e.g., manufacture in the same run, in the samemachining volume, etc.). The virtual part plurality can includedifferent instances of the same virtual part, different virtual parts(e.g., received from the same or different user accounts), or any othersuitable virtual part. The plurality of virtual parts can be selectedthrough optimization for one or more variables (e.g., cost, machiningtime, etc.), shared processes (e.g., all must be milled), or otherwiseselected. The resultant master strategy preferably includes at least onetactic for a feature of a first virtual part immediately dependent uponor preceding a tactic for a feature of a second virtual part. Morepreferably, the master strategy includes the first virtual part masterstrategy interspersed with tactics for a second virtual part. In oneexample, the master strategy can include a roughing tactic for a featureof the first virtual part immediately preceding a roughing tactic for afeature of the second virtual part, wherein a finishing tactic for thefeature of the first virtual part is after the roughing tactic for thesecond virtual part feature. However, the virtual part tactics can beotherwise ordered.

In a first variation, aggregating the individual tactic series togetherS210 includes: determining dependencies for each tactic S212 andordering the tactics from all features of the set into a master serieswhile preserving the tactic dependencies S214.

Determining dependencies for each tactic S212 (e.g., determining thedependency set for a tactic, determining the tactic dependencies,determining the inter-tactic dependencies etc.) functions to determinethe tactics that must be performed before and/or after a given tactic isperformed (e.g., generate a tactic dependency tree). Each tactic can beassociated with a dependency set. The dependency set can include onlypreceding tactics, wherein performance of the tactic can be dependentupon prior performance of prior tactics in the dependency set; onlysucceeding tactics, wherein the tactic must be performed before thesucceeding tactics within the dependency set; a mix of preceding andsucceeding tactics, or any other suitable set of tactics. The dependencyset for a tactic can be an empty set, or include any suitable number oftactic dependencies.

The tactic dependencies can be determined in a variety of ways, and thedetermination methods can be applied globally (e.g., to all features),to a tactic group (e.g., to a roughing group, to a finishing group, to afinishing subgroup, etc.), or to any other suitable set of tactics.

In a first variation, determining the tactic dependencies S212 includes,for each tactic within an ordered series of tactics, creating adependency between each successive tactic on the preceding tactic(s) inthe ordered series. For example, when a filleting tactic includes afillet roughing tactic and a fillet finishing tactic, a dependency canbe created for the fillet finishing tactic on the fillet roughingtactic. Alternatively, the tactic dependencies can be determinedaccording to a set of tactic dependency rules, example shown in FIG. 6.

In a second variation, determining the tactic dependencies S212 includescreating tactic dependencies based on feature height (e.g., assigningdependencies to the roughing tactics according to a height order of therespective part features), example shown in FIG. 3. In this variation,tactics associated with lower features are preferably dependent upontactics associated with higher features, but any other suitable set ofdependencies can be created. The feature height is preferably relativeto the heights of other features, but can alternately be absolute orotherwise determined. The feature height is preferably determined alongthe machining axis, but can alternatively be determined along any othersuitable axis. The feature height can be measured from the tallestregion of the feature, from the tallest region of the feature that isnormal the machining axis (e.g., inclusive or exclusive of edges), orfrom any other suitable portion of the feature. The tallest region ofthe feature can be the feature region most distal from a separationplane, most proximal the tool, or otherwise defined. Alternatively, thefeature height can be determined by: segmenting the virtual part into aplurality of planes perpendicular to the machining axis and associatinga height with each plane, wherein the height decreases with distancealong the machining direction. The feature height can be the heightassociated with the first plane that the feature intersects along themachining direction. Alternatively, the feature height can be determinedfrom virtual model metadata or otherwise determined.

In a third variation, determining the tactic dependencies S212 includescreating tactic dependencies based on inter-feature interactions.

In a first embodiment of the third variation, creating tacticdependencies based on inter-feature interactions includes: determiningthat an inter-feature relationship matches a predetermined relationship,identifying the tactics associated with each feature in theinter-feature set, identifying the rule associated with theinter-feature relationship, and assigning tactic dependencies accordingto the rule. The rules can be heuristically determined, user-specified,or otherwise determined. The tactic dependencies preferably mimic theinter-feature dependencies (e.g., the dependencies are inherited fromthe inter-feature interactions), but can be different or otherwiserelated to the inter-feature dependencies. For example, the rule set canspecify that the all tactics for a hole on a chamfered face (e.g., holeroughing, hole finishing) must be dependent upon the finishing tactic ofthe chamfered face, example shown in FIG. 7. In another example, therule set can specify that all deburring occurs after all other tactictypes. The rule set can additionally which tactics of the features(e.g., roughing, finishing, etc.) must be dependent upon another. Forexample, the rule set can specify that, for a hole contiguous andconcentric with a chamfered ring (e.g., a countersunk hole), the chamferroughing tactic is dependent upon the hole roughing tactic, exampleshown in FIG. 8.

In a second embodiment of the third variation, creating tacticdependencies based on inter-feature interactions includes predictingfeature occlusions and creating a dependency of the occluded feature onthe occluding feature, example shown in FIG. 3. Predicting featureocclusions can include: projecting each part feature along the machiningaxis (e.g., against the machining direction), identifying an adjacentpart feature occluded by the projection. A feature can be occluded bythe projection when the projection intersects the feature, extends overthe feature along the machining direction, or otherwise prevents toolaccess to the feature. However, potential feature occlusions can beotherwise determined, and dependencies otherwise created.

In a fourth variation, determining the tactic dependencies S212 includesdetermining the tactic dependencies based on tool volume interactions.This variant can be performed after a preliminary master series isgenerated, wherein the method can include iterating through multiplemaster series variants until conflicts are resolved. In this variation,the method can include: generating a virtual model of the partintermediary (e.g., a model of the roughed part); sweeping a tool volumealong an anticipated toolpath of a tactic in master series, wherein thetactic is associated with a first feature; identifying a tool volumeinteraction with the virtual part intermediary (collision volume);identifying secondary feature(s) associated with the interactionregions; identifying a secondary tactic for the secondary feature(s)that would remove the collision volume; and creating a dependency of thetactic on the secondary tactic. However, tool collision volumes can beotherwise managed.

However, the dependency set for each tactic can be otherwise determined.

The tactic dependencies can be determined individually (e.g., for eachtactic), as a group, or in any other suitable manner.

In a first variation, the tactic dependencies are determined based onthe dependencies of the underlying features, wherein the tacticsassociated with each feature inherit the dependencies of the feature.For example, when a lower feature is dependent upon a higher feature(e.g., wherein the dependencies are assigned in a top-down manner),tactics for a lower feature can be dependent upon the tactics for thehigher feature.

In a second variation, the tactic dependencies can be determined basedon tactic class. This variation can allow inter-tactic dependencies tobe determined independent of universal feature analysis. This variationcan result in a tactic strategy that aggregates similar tactics (andconsequently, toolpaths requiring the same or similar tools) together,which can minimize tool changes. For example, this variation can resultin a tactic strategy in which all features (accessible from a firstmachining direction) are roughed together, then individually finishedusing the respective tool. This variation also confers some flexibilityin the resultant tactic strategy. For example, if a first feature cannotbe roughed before an adjacent feature is finished (e.g., due to toolvolume interactions), this variation can identify the dependency andchain the first feature roughing tactic after the adjacent feature'sfinishing tactic.

The second variation of tactic dependency determination can include:grouping tactics across the plurality of features into a set of tacticgroups S220 and determining inter-feature tactic dependencies withineach tactic group, wherein the master tactic series preserves theinter-feature tactic dependencies.

Grouping the tactics S220 functions to generate subsets of tactics fordependency determination. The tactics considered are preferably those inthe tactic sets associated with each feature of the plurality, but canalternatively be a subset of those tactics. For example, all tacticsassociated with the plurality of features are considered. The tacticscan be grouped by tactic class (e.g., roughing, finishing), by tactic(e.g., roughing, fillet finishing, chamfer finishing, level finishing,peripheral finishing, hole making, deburring, etc.), by tool typeassociated with the tactic, by tool associated with the tactic (e.g.,first chamfering tool, second chamfering tool, etc.), by accessdirection, or otherwise grouped. For example, the method can includegrouping the tactics across all features in the set by tactic class intotactic groups. This can include grouping all roughing tactics (from eachordered series) into a roughing group, and grouping all finishingtactics (from each ordered series) into a finishing group. Eachfinishing tactic within the finishing group is still dependent upon itsrespective roughing tactic in the roughing group, based on thedependency from the ordered tactic series associated with the feature.

Determining inter-feature tactic dependencies within each groupfunctions to determine auxiliary dependencies between the tactics in thegroup. The auxiliary dependencies are preferably added to the dependencyset associated with the tactic, but can be otherwise recorded. Differentgroups can use the same or different inter-feature dependencydetermination methods, discussed above. One or more inter-featuredependency determination methods can be applied to each group. In afirst example, determining inter-feature tactic dependencies within thegroup includes: determining inter-feature dependencies (e.g.,determining which feature must be machined before another), andassigning the inter-tactic dependencies within a group according to theinter-feature dependencies. In a second example, determininginter-feature tactic dependencies within the group includes creatingdependencies according to the relative heights of the respectivefeatures, such that tactics associated with lower features are dependentupon tactics associated with higher features within the group. In athird example, determining inter-feature tactic dependencies within thegroup includes: assigning dependencies according to the inter-featureinteractions. However, the inter-tactic dependencies within each groupcan be otherwise determined.

In one specific example, the method includes: grouping the tactics, fromall the ordered tactic series associated with a feature, by class into aroughing group and a finishing group. Dependencies for the roughingtactics within the roughing group are assigned according to the relativeheights of the respective features, wherein roughing tactics associatedwith lower roughing features are dependent upon roughing tacticsassociated with higher roughing features. Dependencies for the finishingtactics within the finishing group are assigned according tointer-feature interactions (e.g., based on rule sets associated withpredetermined inter-feature interaction patterns, based on predictedfeature occlusion, etc.). As such, the finishing tactics within thefinishing group are dependent upon roughing tactic in the ordered series(from which the finishing tactic was extracted) and primitives offeatures that must be done before this feature can be made, based onpart topology. However, the dependencies can be otherwise generated.

Ordering the tactics from all part features of the plurality into amaster series S214 while preserving the tactic dependencies functions togenerate the master series. The master series can be a series of tacticsthat, when translated into machine code, could manufacture a physicalanalog of the virtual part, or be otherwise defined. Ordering thetactics functions to generate one or more master series (e.g., tacticevaluation order), where tactics are linked according to dependency. Alltactics from all features are preferably linked within the masterseries; alternatively, the tree can include some unattached branches.The master series is preferably a linear list, but can alternatively bea branched tree or have any other suitable structure. Ordering thetactics can include applying a sorting method to the tactic dependencytree or dependency graph resulting from tactic dependency determination,or otherwise ordering the tactics to preserve each tactic'sdependencies. The sorting method can include: a topological sort (e.g.,Khan's algorithm, depth-first search, etc.), or any other suitablesorting method.

The method can optionally include inserting part flip instructions, toolchange instructions, fixturing instructions, or any other suitable setof instructions between consecutive tactics or master strategies. In oneexample, a part master strategy for the part can include a first masterstrategy for a first part face appended to a second master strategy fora second part face, wherein the part master strategy can include a partflipping instruction and first part face fixturing instructions betweenthe first and second master strategies.

The method can optionally include performing cycle detection to thetactic dependency graph prior to sorting application to detect anycircular dependencies (cycles). In response to cycle detection, themethod can: reject the virtual part, consider a different process orcombination thereof for part manufacture, consider a different set ofmanufacturing directions, consider a different set of tactics for thepart (e.g., treating a fillet as a set of stepped levels instead of afillet, etc.), or otherwise adjust the analysis.

Ordering the tactics into a master series S214 can generate multiplepotential master series. This can occur when the features are so looselyrelated that the part can be made through multiple different strategies(e.g., when the finishing order for a first and second feature areinterchangeable). When this happens, the method can include selecting apotential master series for use in manufacture, as shown in FIG. 2. Thepotential master series can be selected based on the respective score(e.g., manufacturability score, work holding interaction score, workholding confidence score, etc.), based on an optimization (e.g., tooptimize for a set of manufacturing parameters, such as tool changes,tool motion, manufacturing time, cost, etc.), based on whether atoolpath can be generated from the respective master series, based onthe probability of part failure or reliability (e.g., determined using ascore, neural network, or other method; wherein the master series withthe highest reliability can be selected), or otherwise selected. Amaster toolpath can be selected using similar methods when toolpathprimitives are ordered instead of the tactics.

In a first variation, selecting a potential master series for use inmanufacture includes: generating a toolpath from each potential masterseries, determining a number of tool changes, determining a measure oftool motion (e.g., total distance travelled for a given tool), selectinga toolpath that optimizes for (e.g., minimizes) the number of toolchanges and tool motion. In a second variation, selecting a potentialmaster series for use in manufacture includes: attempting to generate atoolpath from each potential master series, and selecting the masterseries for which a toolpath can be generated. In a third variation,selecting a potential master series for use in manufacture includes:running a virtual simulation for each potential master series, scoringeach master series based on the respective virtual simulation (e.g.,based on resultant part stress, work holding confidence, number ofinterferences, tolerances required, etc.), and selecting the masterseries with the optimal score (e.g., highest score, etc.). However, themaster series can be otherwise selected.

However, individual tactic series can be otherwise aggregated into themaster series.

d. Determining Toolpath Primitives for Each Tactic.

Determining a toolpath primitive for each tactic S300 functions togenerate a set of toolpaths that, when implemented, cooperativelyaccomplishes (e.g., performs) the associated tactic. The toolpathprimitive for each tactic can be determined before, after, orconcurrently with: tactic set determination for each feature, masterseries determination, or at any other suitable time.

A toolpath primitive preferably includes a block of toolpaths, morepreferably an ordered series of toolpaths, but can alternatively includeany suitable set of toolpaths. The toolpaths within the toolpathprimitive and/or specific parameters thereof are preferably immutable,but can alternatively be changed. For example, the toolpaths within eachtoolpath primitive preferably cannot be reordered, even when the orderof the toolpath primitive is changed (e.g., when the associated tacticis reordered within the master series). The toolpaths can be directional(e.g., vectors), directionless, or have any other suitable set ofparameters. Each toolpath within the block is preferably represented bya set of numerical control instructions (e.g., numerical control code),but can be otherwise represented.

Each toolpath preferably specifies the relative motion between a cuttingedge of a tool (or material addition spindle of the tool) and theworkpiece, such that the toolpath can be subsequently translated intotool motion or workpiece motion. For example, a roughing tactic can beassociated with a set of linear toolpaths (e.g., boustrophedonictoolpaths, parallel toolpaths, etc.), and a hole-making tactic can beassociated with a rotation direction and an entry path. However, thetoolpath can be dynamically generated based on the feature parameters(e.g., orientation, shape, size, etc.) and the associated tactic, or beotherwise determined. Each tactic can be associated with a single tool,a class of tools (e.g., a set of tools), a set of tools sharing a commonproperty (e.g., common geometry, such as shape, diameter, angle, orlength; common tool type, such as flat end mill, ball end mill, drill,radius cutter, chamfer tool; etc.), or be associated with any othersuitable set of tools. For example, the chamfer tactic can be associatedwith both a chamfer tool (e.g., chamfer cutter) and a countersinkcutter. The features, capabilities, limitations, and/or toolpathsassociated with each tactic can be determined independent of the tools,can be the features, capabilities, limitations, and/or toolpaths of thetools associated with the tactic, be received from a user, beempirically learned, or be determined in any other suitable manner.

Determining the toolpath primitive for each tactic S300 can includegenerating the toolpath primitive based on a set of tactic variables,selecting the toolpath primitive for the tactic (e.g., from a library),assigning the toolpath primitive for the tactic (e.g., using a rule set,using a neural network, etc.), filling out a toolpath primitive template(e.g., with tactic variable values), calculating the toolpath primitivefor the tactic, determining the toolpath primitive using a toolpathprimitive algorithm (e.g., trained neural network or other algorithm),or otherwise determining the tactic set for each identified feature.

The toolpath primitive can be determined for a given tactic based on:the feature geometry (e.g., radius, height, volume, concavity,tolerance, etc.), the machining direction, the tool associated with thetactic, the manufacturing process for the feature or part, the machineassigned to the part, the tactic dependency set, the cutting parametersassociated with the feature or tactic, or based on any other suitabletactic variable. Alternatively or additionally, the toolpath primitivescan be a set of toolpaths associated with one or more of theaforementioned tactic variables.

Cutting parameters associated with the feature or tactic can includefeed rate, spindle speed, step over, step down, ramp angle, or any othersuitable cutting parameter. The cutting parameter can be predetermined(e.g., a constant for the tool, tactic, etc.), selected from a libraryor lookup table, read of a chart or graph, calculated (e.g., based onother tactic parameters), determined using a neural network, orotherwise determined. The cutting parameter can be determined based onthe tool, tool geometry (e.g., tool diameter), the feature geometry, thetarget chipload, the target surface speed, or otherwise determined.Target parameters (e.g., chipload, surface speed, etc.) can bedetermined based on feature geometry, part material, tool, tool type, bea constant, any other suitable tactic variable, or otherwise determined.In a first variation, the cutting parameter is a constant. In a secondvariation, the cutting parameter is calculated from an equation, whereinthe tool or tool type associated with the tactic dictates the equationused (e.g., wherein different equations are used to determine thecutting parameters for different tools). However, the cutting parameterscan be otherwise determined.

When the toolpath primitive is dependent upon variables external thevirtual part (e.g., manufacturing process, machine, etc.), the externalvariables are preferably determined prior to toolpath primitivedetermination, but can alternatively be selected after. The machines orprocesses can be selected by optimizing the run time (e.g., minimizingthe run time) for the part, fixture plate (including one or more parts),or population of parts to be made; optimizing the manufacturing cost forthe part, fixture plate, or population of parts to be made; or beotherwise selected. For example, a waterjet cutter can be selected torough the profile of a plurality of small parts when there are no partsover a threshold size to be made, and a mill can be selected to roughthe profiles of the small parts when there are large parts to be made(e.g., wherein the waterjet cutter is selected for roughing the largeparts). A toolpath for a waterjet cutter can be generated based on theroughing tactic associated with the small part sidewalls in the formerexample, and a toolpath for a mill can be generated based on theroughing tactic associated with the small part sidewalls in the latterexample.

In a first variation, determining a toolpath primitive for each tacticS300 includes calculating the toolpath primitive based on the featuregeometry and/or other tactic variables. In this variation, each tacticcan be associated with a different equation that is used to calculatethe toolpath primitive.

In a second variation, determining a toolpath primitive for each tacticS300 includes retrieving a toolpath primitive template based on thetactic (e.g., tactic class) from a toolpath library, and filling invariables using the feature geometry and/or other tactic variables. Inthis variation, each tactic can be associated with a different toolpathprimitive template that is used to determine the toolpath primitive.

In a third variation, determining a toolpath primitive for each tacticS300 includes feeding the feature geometry and tactic into a toolpathgeneration engine, and using the resultant toolpath as the toolpathprimitive for the tactic. Examples of toolpath generation engines thatcan be used include the ModuleWorks toolpath generation engine, or anyother suitable toolpath generation module.

In a fourth variation, determining a toolpath primitive for each tacticS300 includes feeding the feature geometry into a toolpath generationengine, classifying each toolpath from the resultant toolpath set as atactic of the tactic set associated with the feature, and using thetoolpaths associated with each tactic as the toolpath primitive for thetactic.

In a fifth variation, determining a toolpath primitive for each tacticS300 includes selecting a predetermined toolpath block from a toolpathlibrary or catalog based on the feature geometry, tactic class, and/ormachining direction.

However, the toolpath primitive can be otherwise determined for eachtactic.

e. Generating a Master Toolpath.

Combining the toolpath primitives for the tactics to generate a mastertoolpath S400 functions to combine disparate toolpath primitives into amaster toolpath (master toolpath strategy) that could be used tomanufacture a physical analog of the virtual part. Combining thetoolpath primitives preferably includes ordering the toolpathprimitives, wherein each toolpath primitive is treated as a cohesive,ordered block. However, combining the toolpath primitives canalternatively include reordering the toolpaths within the toolpathprimitive, changing the toolpaths (e.g., the toolpath variables,toolpath type, etc.) within the toolpath primitive (e.g., to connect thetoolpath primitive to a preceding or succeeding toolpath primitive), orotherwise changing the toolpath primitive during toolpath primitivecombination. The toolpath primitives can be combined after tacticdependency determination, after master series determination, withoutmaster series determination, or at any other suitable time. Combiningmultiple toolpaths can additionally include inserting tool or machinechange instructions between toolpaths corresponding to different tacticclasses, sub-classes, or tools.

In a first variation, the toolpath primitives are combined S400 based onthe master series (master tactic strategy, master tactic series). Inthis variation, the toolpath primitives can be combined after the masterseries is generated. In a first embodiment, the tactics within themaster series are replaced by the associated toolpath primitive. In asecond embodiment, each toolpath primitive inherits a relative positionwithin the series from the associated tactic, wherein the toolpathprimitive position is the respective tactic's position within the masterseries. However, the toolpath primitives can be otherwise combined basedon the master series.

In a second variation, the toolpath primitives are combined S400 basedon the respective tactic's dependency set. This variation can beperformed without master series determination. In this variation, eachtoolpath primitive can inherit the respective tactic's dependency set,wherein the method can order the toolpath primitives (e.g., instead ofthe tactics, discussed above) based on the dependency set to generatethe ordered series of toolpath primitives (master toolpath).

In a third variation, combining multiple toolpath primitives S400 caninclude determining an optimal toolpath that satisfies all toolpathrequirements, for the given tool, for the face. For example, the optimaltoolpath can be the toolpath that minimizes the tool movement betweencuts and minimizes tool changes. However, the toolpath primitives can beotherwise combined.

f. Translating the Master Toolpath into Machine Code.

Translating the master toolpath into machine code S500 functions togenerate machine-readable instructions (e.g., G-code), such that amanufacturing machine can execute all or a portion of the mastertoolpath strategy. The translation is preferably automatically performed(e.g., by the computing system), but can alternatively be manuallyperformed or be otherwise performed. The translation is preferably basedon code parameters for a specific machine previously selected for partface manufacture, but can alternatively be based on code parameters fora machine type, make, model, tool, or be based on any other suitablemachine parameter. The code parameters can include machine capabilitylimits (e.g., maximum feed rate, maximum spindle rate, ideal feed rateto spindle rate ratio, etc.), machine variable precision (e.g., numberof digits permitted per machine variable), or include any other suitableparameter. Translating the master toolpath strategy into machine codecan additionally include determining code parameters that optimize oneor more machining parameters (e.g., time, cost, etc.).

The master toolpath strategy can be translated into machine code by:matching machine code expressions to the toolpaths in the mastertoolpath strategy (e.g., using a machine code database associatingtoolpaths with machine code expressions); calculating code parametervalues based on the toolpaths (e.g., feed rates, spindle rates,distances, turn radii, dependency set, etc.); or otherwise convertingthe master toolpath strategy into machine code (example shown in FIG.10). In one example, the method can include: identifying a machine codelibrary for a given machine assigned to the virtual part (e.g., specificmachine, machine type, machine manufacturer), wherein the machine codelibrary includes machine code expressions for each toolpath, numericcontrol instruction, numeric control code, or other toolpath expression;and replacing each toolpath (within the series of toolpath primitives)with the machine code expression corresponding to said toolpath.However, the translation can be otherwise performed.

One or more machine code blocks can be generated from a single mastertoolpath strategy. In one variation, different machine code blocks aregenerated for different portions of the master toolpath strategy whenthe different portions are performed by different machines. For example,a first portion of the master toolpath strategy can be translated into afirst code block for a 3-axis CNC mill, while a second portion of themaster toolpath strategy (separate and distinct from the first portion)can be translated into a second code block for a 5-axis CNC mill. In asecond variation, multiple machine code blocks can be generated for thesame portion of the master toolpath strategy (e.g., such that redundantcode blocks are generated), wherein each machine code block can be for adifferent machine of similar capability. For example, a first and secondmachine code block can be generated for the same portion of the mastertoolpath strategy, wherein the first and second machine code blockscorrespond to a first and second 3-axis CNC mill of different makes,models, and/or versions.

Generating the machine code can additionally include inserting systeminitialization code into the machine code blocks, generating probe pathsbased on the toolpaths (e.g., to verify the features formed by thetoolpaths), inserting the probe paths into the machine code block (e.g.,before or after the machine code corresponding to the toolpaths), ortransforming the machine code block in any other suitable manner.

g. Manufacturing a Physical Part.

Manufacturing a physical part using the machine code functions tomanufacture a physical analog of the virtual part (e.g., manufacture aphysical part substantially corresponding to the virtual part).Manufacturing a physical part using the machine code can includeproviding the machine code to the machine (e.g., controlling the machineaccording to the machine code), wherein the machine subsequentlyexecutes the machine code to manufacture the physical part. However, thephysical part can be otherwise manufactured.

h. Validating the Master Toolpath.

The method can optionally include validating the master toolpath basedon the virtual model, which functions to verify that the master toolpathwill manufacture the desired part. The validation can be performed usingthe master toolpath, the machine code generated based on the mastertoolpath, or be validated using any other suitable set of machininginstructions. Validating the master toolpath preferably includesvirtually simulating the effects of performing the master toolpath on avirtual billet (part stock), and comparing the virtually manufacturedpart with the virtual model of the desired part. The master toolpath canbe validated when the dimensions of the virtually manufactured part arewithin a threshold tolerance of the virtual model dimensions, whereinthe threshold tolerance can be specified by the user, be defaulttolerance levels, or be otherwise specified. When the virtuallymanufactured part is outside of the tolerance threshold of the virtualmodel, a notification can be generated and sent to a user. Alternativelyor additionally, a second master toolpath can be generated when thevirtually manufactured part does not substantially match the virtualmodel.

i. Selecting Parts for Concurrent Manufacture.

The method can additionally include selecting a set of parts to includeon a common fixture plate from a plurality of parts, which functions todetermine the virtual parts within the virtual part plurality. Themethod can include: receiving a plurality of virtual parts (from asingle user account or a plurality of user accounts), and selecting theset of virtual parts from the plurality of virtual parts. The set can beselected by optimization (e.g., to minimize cost, minimize machiningtime, etc.), based on shared parameters, or otherwise selected. The setof parts can be parts that share similar tactics, share similar tacticsin similar order, share similar toolpaths, share similar tools, sharesimilar machines, share similar finishing times, or have any othersuitable common variable. Alternatively, the parts can use differenttactics, machines, tools, or any other suitable variable. Alternativelyor additionally, the parts can be selected to optimize a manufacturingparameter (e.g., run time, cost, etc.). However, the parts can beotherwise selected. The parts for the fixture plate can be selectedbefore toolpath generation (e.g., wherein the master toolpath can begenerated after virtual part arrangement on the fixture plate, as shownin FIG. 11), after toolpath generation, or be selected at any othersuitable time. The parts can be selected before toolpath translationinto machine code, after toolpath translation into machine code, or beselected at any other suitable time.

Selecting the parts for the fixture plate can additionally include:virtually arranging the parts on the fixture plate, and translating thetoolpath coordinates for each part according to the virtual position ofthe part on the fixture plate, such that the toolpath coordinates areall relative to a fixture plate reference point or machine referencepoint. Toolpaths for the same machine and tool are preferably combined(e.g., linked) across multiple parts, based on the respective partlocation relative to the reference point, but can be otherwise related.The machine code can be generated based on the combined toolpaths,generated based on the individual part toolpaths then adjusted afterpart placement, or be generated in any other suitable manner.

An alternative embodiment preferably implements the above methods in acomputer-readable medium storing computer-readable instructions. Theinstructions are preferably executed by computer-executable componentspreferably integrated with a tactic determination system. The tacticdetermination system can include a feature identification system and afeature completion system configured to associate each feature withtactics capable of manufacturing the feature. The tactic determinationsystem can additionally include a toolpath determination systemconfigured to determine a toolpath, relative to a part reference point,based on the tactics associated with the part features. The tacticdetermination system can additionally be utilized with an optimizationsystem, wherein the optimization system can include a fixture platesystem configured to select parts to include on a fixture plate from aplurality of parts; a machine selection system configured to select themachine to use in manufacturing the plurality of parts (e.g., based onthe part tactics and/or toolpaths); and a translation system, configuredto convert the part toolpaths into fixture plate toolpaths (e.g.,relative to a fixture plate reference point) and to convert the parttoolpaths into machine-readable code. The computer-readable medium maybe stored on any suitable computer readable media such as RAMs, ROMs,flash memory, EEPROMs, optical devices (CD or DVD), hard drives, floppydrives, or any suitable device. The computer-executable component ispreferably a processor but the instructions may alternatively oradditionally be executed by any suitable dedicated hardware device.

Although omitted for conciseness, the preferred embodiments includeevery combination and permutation of the various system components andthe various method processes.

As a person skilled in the art will recognize from the previous detaileddescription and from the figures and claims, modifications and changescan be made to the preferred embodiments of the invention withoutdeparting from the scope of this invention defined in the followingclaims.

We claim:
 1. A method comprising: receiving a virtual part from a useraccount, the virtual part comprising a plurality of part features;classifying each part feature of the plurality with a feature class froma predetermined set of feature classes, each feature associated with anordered series of tactics, each tactic associated with a different tooltype from a set of tool types, wherein each successive tactic within anordered series is dependent upon a preceding tactic within the orderedseries; grouping the tactics across different features into tacticgroups; determining inter-feature tactic dependencies within each tacticgroup; sorting the tactics into a master series while preserving thetactic dependencies; based on the master series, automaticallydetermining a master toolpath based on a set of manufacturing costparameters, comprising: determining a toolpath primitive for each tacticbased on the geometry of the respective part feature; combining thetoolpath primitives for the tactics based on the master series togenerate a master toolpath; and automatically translating the mastertoolpath into machine code, wherein a physical part is manufactured bycontrolling a machine according to the machine code.
 2. The method ofclaim 1, wherein the tactics comprise roughing tactics and finishingtactics, wherein grouping the tactics into a set of tactic groupscomprises grouping the roughing tactics from each ordered series oftactics into a roughing group, and grouping the finishing tactics fromeach ordered series of tactics into a finishing group.
 3. The method ofclaim 1, wherein tool type comprises a cutter shape.
 4. The method ofclaim 3, wherein determining the toolpath primitive for each tacticbased on the tool type comprises calculating a cutting parameter valuefor the toolpath primitive using an equation associated with the tooltype, wherein each tool type is associated with a different equationfrom the remaining tool types of the set.
 5. The method of claim 1,wherein determining the master toolpath comprises optimizing the set ofmanufacturing cost parameters according to a set of optimization goals,wherein the set of optimization goals comprises minimizing a number ofpart flips.
 6. The method of claim 1, wherein the set of manufacturingcost parameters comprise a number of tool changes.
 7. The method ofclaim 1, wherein the set of manufacturing cost parameters comprises atotal run time.
 8. The method of claim 1, wherein each part featurecomprises a height along a machining axis, wherein determininginter-feature tactic dependencies comprises assigning dependencies basedon a height order of the respective part features.
 9. The method ofclaim 1, wherein the tactic groups comprise a finishing group, whereineach part feature comprises a height along a machining axis, whereindetermining inter-feature tactic dependencies within the finishing groupcomprises, for each part feature: projecting the part feature along themachining axis; identifying an adjacent part feature occluded by theprojection; and creating a dependency between an adjacent finishingtactic, associated with the adjacent part feature, on a finishing tacticassociated with the part feature.